COS 521: A Graduate Course in Algorithm Design and Analysis

نویسنده

  • Sanjeev Arora
چکیده

These are lecture notes from a graduate course for Computer Science graduate students at Princeton University in Fall 2013 and Fall 2014. (The course also attracts undergrads and non-CS grads and total enrollment in 2014 was 35.) The course assumes prior knowledge of algorithms at the undergraduate level. This new course arose out of thinking about the right algorithms training for CS grads today, since the environment for algorithms design and use has greatly changed since the 1980s when the canonical grad algorithms courses were designed. The course topics are somewhat nontraditional, and some of the homeworks involve simple programming assignments that encourage students to play with algorithms using simple environments like Matlab and Scipy. Since this is the last theory course many of my students (grad or undergrad) might take for the rest of their lives, I think of the scope as more than just algorithms; my goal is to make them look at the world anew with a mathematical/algorithmic eye. For instance, I discovered many holes in my students’ undergraduate CS education: information/coding theory, economic utility and game theory, decision-making under uncertainty, cryptography (anything beyond the RSA cryptosystem), etc. So I created space for these topics as well, figuring that the value added by this was greater than by, say, presenting detailed analysis of the Ellipsoid algorithm (which I sketch instead). Programming assignments went out of fashion in most algorithms courses in the past few decades, but I think it is time to bring them back. First, CS students are used to a hands-on learning experience; an algorithm becomes real only once they see it run on real data. Second, the computer science world increasingly relies on off-the-shelf packages and library routines, and this is how algorithms are implemented in industry. One can write a few lines of code in matlab and scipy, and run it within minutes on datasets of millions or billions of numbers. No JAVA or C++ needed! Algorithms education should give students at least a taste of such powerful tools. Finally, even for theory students it can be very beneficial to play with algorithms and data a bit; this will help them develop a different kind of theory. The course gives students a choice between taking a 48-hour final, or doing a collaborative term project. Some sample term projects can be found at the course home page. http://www.cs.princeton.edu/courses/archive/fall14/cos521/ This course is very much a work in progress, and I welcome your feedback and suggestions. I thank numerous colleagues for useful suggestions during the design of this course. Above all, I thank my students for motivating me to teach them better; their feedback and questions have helped shape these course notes. Sanjeev Arora March 2015

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Economic Dispatch of Power Systems using Hybrid Particle Swarm Algorithm based on Sin-Cos Accleration Coefficient

Abstract: Distribution economic burden in power system is one of the important and essential issues in power plant production planning. This thesis presents the economic burden for generating power plants with smooth and uneven functions and considering the constraints of the power plant (steam valve, forbidden areas, with and without transmission losses) in a multi-generator power system. The ...

متن کامل

COS 521 Lecture 4 : Streaming Algorithms

The Chernoff bound is a tail bound for sums of independent real variables.

متن کامل

Cos 594d: a Theorist’s Toolkit

These are edited lecture notes from a graduate course at the Computer Science department of Princeton University in Fall 2002. The course was my attempt to teach first year graduate students students many mathematical tools useful in theoretical computer science. Of course, the goal was too ambitious for a course with 12 three hour lectures. I had to relegate some topics to homework; these incl...

متن کامل

A method for identifying software components based on Non-dominated Sorting Genetic Algorithm

Identifying the appropriate software components in the software design phase is a vital task in the field of software engineering and is considered as an important way to increase the software maintenance capability. Nowadays, many methods for identifying components such as graph partitioning and clustering are presented, but most of these methods are based on expert opinion and have poor accur...

متن کامل

Enumeration of Dominant Solutions: An Application in Transport Network Design

A One-Dimensional Binary Integer Programming Problem (1DB-IPP) is concerned with selecting a subset from a set of k items in budget constraint to optimize an objective function. In this problem a dominant solution is defined as a feasible selection to which no further item could be added in budget constraint. This paper presents a simple algorithm for Enumeration of Dominant Solutions (EDS) and...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2015